<?php
/**
 * huhaiqin,2025.2.5
 * 游戏模块用户接口
 */
namespace Game\Controller;
use Game\Controller\GameBaseController;

class UserController extends GameBaseController{

    /**
     * huhaiqin,2025.2.5
     * 登录接口 仅用于测试
     */
    public function login(){
        dump($_POST);
        // dump($this->_get_game_config()->getTbItem()->getDataMap());
    }

    /**
     * huhaiqin,2025.2.5
     * 登出接口
     */
    public function logout(){

    }

    /**
     * huhaiqin,2025.2.5
     * 获取公告图片列表
     */
    public function get_notice_image(){
        $res = _get_notice_image_list();
        if(!$res){
            _apiReturn(0, '获取失败');
            return;
        }
        _apiReturn(1, 'success', ['data' => $res]);
    }

    /**
     * huhaiqin,2025.2.5
     * 获取用户信息接口
     * //请求参数
     * token: string //用户token,
     * //返回参数
     * user_info: {} //完整用户信息
     */
    public function get_user_info(){
        $res = D('GameUser', 'Service')->get_full_user_info($this->_uid);
        // 再此处判断一下有没有完成当天的登录任务
        // if($res['data']['task'][10001]['status'] == 0){
        //     D('GameUser', 'Service')->complete_task($this->_uid, 10001, 1);
        //     $res = D('GameUser', 'Service')->get_full_user_info($this->_uid);
        // }
        if(!$res['status']){
            _apiReturn(0, $res['msg']);
            return; 
        }
        _apiReturn(1, '获取成功', ['user_info' => $res['data']]);
    }

    /**
     * du,2025.2.11
     * 更改用户信息
     * //请求参数
     * post: {} //用户信息,
     * 能修改的信息是：昵称，头像，性别
     * nickname: string //昵称
     * avatar_id: int //头像
     * gender: int //性别 0-不知，1-男，2-女
     *  //返回参数
     *  user_info: {} //用户信息
     * 
     */
    public function set_user_info(){
        // 测试数据
        $post = I('post.');
        if(!$post){
            _apiReturn(0, '参数不能为空');
            return; 
        }
        $info['nickname'] = $post['nickname'];
        $info['avatar_url'] = $post['avatar_url'];
        $res = D('GameUser', 'Service')->set_user_info($this->_uid, $info);
        if(!$res){
            _apiReturn(0, "修改失败");
            return;
        }
        _write_user_log($this->_uid, 'set_user_info', ['nickname' => $info['nickname'], 'avatar_url' => $info['avatar_url']]);
        _apiReturn(1, '修改成功', ['user_info' => $this->_get_full_user_info()]);
    }

    /**
     * 
     * du,2025.2.11
     * 增加玩家体力
     * //请求参数
     * quantity: int //体力数量 
     */
    public function recover_energy(){
        $quantity = I('quantity', 10);
        if(!$quantity){
            _apiReturn(0, '体力数量不能为空');
            return;
        }
        $res = D('GameUser', 'Service')->recover_energy($this->_uid, $quantity);
        if(!$res['status']){
            _apiReturn(0, $res['msg']);
            return;
        }
        _write_user_log($this->_uid, 'recover_energy', $quantity);
        _apiReturn(1, '增加体力成功', ['user_info' => $this->_get_full_user_info(), 'energy' => $res['data']['energy'], 'recover_timestamp' => $res['data']['energy_recover_timestamp'] ] );
    }

    /**
     * du,2025.2.11
     * 微信分享
     * //请求参数
     */
    public function wechat_share() {
        $res = D('GameUser', 'Service')->claim_share_reward($this->_uid);
        if(!$res['status']){
            _apiReturn(0, $res['msg']);
            return;
        }
        _write_user_log($this->_uid, 'wechat_share', '', $res['data']['reward_item_list']);
        _apiReturn(1, $res['msg'], ['user_info' => $this->_get_full_user_info(), 'reward_item_list' => $res['data']['reward_item_list']]);
    }

    /**
     * Summary of update_guide
     * @return void
     */
    public function update_guide() {
        $guide_id = I('guide_id');
        if(!$guide_id){
            _apiReturn(0, '参数不能为空');
            return;
        }
        $res = D('GameUser', 'Service')->update_guide_info($this->_uid, $guide_id);
        if(!$res['status']){
            _apiReturn(0, $res['msg']);
            return;
        }
        _write_user_log($this->_uid, 'update_guide', $guide_id);
        _apiReturn(1, '更新引导成功', [ 'user_info' => $this->_get_full_user_info() ]);
    }

    /**
     * 初始化玩家数据
     */
    public function init_user_data() {
        $res = D('GameUser', 'Service')->init_user_data($this->_uid);
        if(!$res['status']){
            _apiReturn(0, $res['msg']);
            return;
        }
        _write_user_log($this->_uid, 'init_user_data');
        _apiReturn(1, '初始化成功', ['user_info' => $this->_get_full_user_info()]);
    }

    /**
     * 领取福利码奖励
     */
    public function claim_code_reward() {
        $profit_code = I('profit_code');
        if(!$profit_code){
            _apiReturn(0, '参数不能为空');
            return;
        }
        $code_reward_list = _get_config_table()->getTbCodeReward()->getDataList();
        foreach($code_reward_list as $k => $v){
            if($v->code == $profit_code){
                $code_reward = $v;
                break;
            }
        }
        if(!$code_reward){
            _apiReturn(0, '福利码不存在');
            return;
        }
        // 缓存查询，避免多次重复查询
        if(S('code_reward_' . $this->_uid . '_' . $code_reward->id)){
            _apiReturn(0, '福利码已领取');
            return;
        }
        $res = D('GameUser', 'Service')->claim_code_reward($this->_uid, $code_reward->id);
        if(!$res['status']){
            _apiReturn(0, $res['msg']);
            return;
        }
        _write_user_log($this->_uid, 'claim_code_reward', $profit_code, $res['data']['reward_item_list']);
        _apiReturn(1, '领取成功', ['user_info' => $this->_get_full_user_info(), 'reward_item_list' => $res['data']['reward_item_list']]);
    }

    /**
     * huhaiqin,2025.2.5
     * 修改名字接口
     * //请求参数
     *   token: string //用户token,
     *   nickname: string //名字
     *  //返回参数  
     *  user_info: {} //用户信息
     * 
     */
    public function set_user_nickname(){
        
    }

    /**
     * huhaiqin,2025.2.5
     * 修改头像接口
     * //请求参数
     *   token: string //用户token,
     *   avatar_id: int //头像id
     *   avatar_frame_id //头像框id
     *  //返回参数
     *  user_info: {} //用户信息
     *  
     */
    public function set_avatar(){

    }

    /**
     * huhaiqin,2025.2.5
     * 修改头像框接口
     * //请求参数
     *   token: string //用户token,
     *   avatar_frame_id //头像框id
     *  //返回参数
     *  user_info: {} //用户信息
     *  
     */
    public function set_avatar_frame(){

    }
}